package sm.pzavoli.mercato.model;

import java.util.HashMap;

import sm.pzavoli.std.Attributo;
import sm.pzavoli.std.ColumnType;
import sm.pzavoli.std.ProprietaAttributo;
import sm.pzavoli.std.StdPojo;

public class Ticker extends StdPojo{
	int _id;
	String nome;
	String Symbol;
	static HashMap<String, ProprietaAttributo> m_pattributi = new HashMap<String, ProprietaAttributo>();
	public static final String CSZ_ID = "_id_Ticker";
	public static final String CSZ_NOME = "Nome";
	public static final String CSZ_CAP_NOME = "Nome";
	public static final String CSZ_SIMBOLO = "Symbol";
	public static final String CSZ_CAP_SIMBOLO = "Simbolo";
	public static final String CSZ_QUANTITA = "Quantita";
	public static final String CSZ_CAP_QUANTITA = "Quantita";
	public static final String CSZ_PREZZOMEDIO = "PrezzoMedio";
	public static final String CSZ_CAP_PREZZOMEDIO = "Prezzo Medio";
	public static final String CSZ_PREZZOATTUALE = "PrezzoAttuale";
	public static final String CSZ_CAP_PREZZOATTUALE = "Prezzo Attuale";
	public static final String CSZ_GUADAGNOPERDITA = "GuadagnoPerdita";
	public static final String CSZ_CAP_GUADAGNOPERDITA = "G/P";

	public static final String CSZ_LAST_DATE = "LastDate";
	public static final String CSZ_CAP_LAST_DATE = "Last Date";
	public static final String CSZ_DIFF_PREZZO = "DiffPrezzo";
	public static final String CSZ_CAP_DIFF_PREZZO = "Diff. Prezzo";
	public static final String CSZ_DIFF_PERC = "DiffPerc";
	public static final String CSZ_CAP_DIFF_PERC= "Diff. Perc.";
	public static final String CSZ_PERATIO = "PERatio";
	public static final String CSZ_CAP_PERATIO= "PE Ratio";
	public static final String CSZ_VOLUME = "Volume";
	public static final String CSZ_CAP_VOLUME = "Volume";
	
	public static final String CSZ_PREVISIONE = "Previsione";
	public static final String CSZ_CAP_PREVISIONE = "Previsione";
	public static final String CSZ_GIORNIPREVISIONE = "GiorniPrevisione";
	public static final String CSZ_CAP_GIORNIPREVISIONE = "GiorniPrevisione";
	
	static {
		m_pattributi.put(CSZ_ID, new ProprietaAttributo(CSZ_ID,ColumnType.IntType,true,false,true));
		m_pattributi.put(CSZ_NOME, new ProprietaAttributo(CSZ_NOME,CSZ_CAP_NOME,ColumnType.StringType,false,false,false));
		m_pattributi.put(CSZ_SIMBOLO, new ProprietaAttributo(CSZ_SIMBOLO,CSZ_CAP_SIMBOLO,ColumnType.StringType,false,false,false));		
		m_pattributi.put(CSZ_QUANTITA, new ProprietaAttributo(CSZ_QUANTITA,CSZ_CAP_QUANTITA,ColumnType.IntType,false,true,false));		
		m_pattributi.put(CSZ_PREZZOMEDIO,  new ProprietaAttributo(CSZ_PREZZOMEDIO,CSZ_CAP_PREZZOMEDIO,ColumnType.DoubleType,false,true,false));		
		m_pattributi.put(CSZ_PREZZOATTUALE,  new ProprietaAttributo(CSZ_PREZZOATTUALE,CSZ_CAP_PREZZOATTUALE,ColumnType.DoubleType,false,true,false));		
		m_pattributi.put(CSZ_GUADAGNOPERDITA, new ProprietaAttributo(CSZ_GUADAGNOPERDITA,CSZ_CAP_GUADAGNOPERDITA,ColumnType.DoubleType,false,true,false));		

		m_pattributi.put(CSZ_LAST_DATE, new ProprietaAttributo(CSZ_LAST_DATE,CSZ_CAP_LAST_DATE,ColumnType.StringType,false,true,false));		
		m_pattributi.put(CSZ_DIFF_PREZZO, new ProprietaAttributo(CSZ_DIFF_PREZZO,CSZ_CAP_DIFF_PREZZO,ColumnType.DoubleType,false,true,false));		
		m_pattributi.put(CSZ_DIFF_PERC, new ProprietaAttributo(CSZ_DIFF_PERC,CSZ_CAP_DIFF_PERC,ColumnType.DoubleType,false,true,false));		
		m_pattributi.put(CSZ_PERATIO, new ProprietaAttributo(CSZ_PERATIO,CSZ_CAP_PERATIO,ColumnType.DoubleType,false,true,false));
		m_pattributi.put(CSZ_VOLUME, new ProprietaAttributo(CSZ_VOLUME,CSZ_CAP_VOLUME,ColumnType.DoubleType,false,true,false));		
		m_pattributi.put(CSZ_PREVISIONE, new ProprietaAttributo(CSZ_PREVISIONE,CSZ_CAP_PREVISIONE,ColumnType.DoubleType,false,true,false));		
		m_pattributi.put(CSZ_GIORNIPREVISIONE, new ProprietaAttributo(CSZ_GIORNIPREVISIONE,CSZ_CAP_GIORNIPREVISIONE,ColumnType.DoubleType,false,true,false));		
		
	}
	public Ticker() {
		super();
	}
	
	public Ticker(int id, String nome, String simbolo) {
		super();
		setID( id);
		setNome(nome);
		setSymbol(simbolo);
	}
	
	@Override
	protected void initAttrs() {
		super.initAttrs();
		addAttributo(m_pattributi.get(CSZ_ID));
		addAttributo(m_pattributi.get(CSZ_NOME));
		addAttributo(m_pattributi.get(CSZ_SIMBOLO));
		addAttributo(m_pattributi.get(CSZ_QUANTITA));
		addAttributo(m_pattributi.get(CSZ_PREZZOMEDIO));
		addAttributo(m_pattributi.get(CSZ_PREZZOATTUALE));
		addAttributo(m_pattributi.get(CSZ_GUADAGNOPERDITA));

		addAttributo(m_pattributi.get(CSZ_LAST_DATE));
		addAttributo(m_pattributi.get(CSZ_DIFF_PREZZO));
		addAttributo(m_pattributi.get(CSZ_DIFF_PERC));
		addAttributo(m_pattributi.get(CSZ_PERATIO));
		addAttributo(m_pattributi.get(CSZ_VOLUME));
		addAttributo(m_pattributi.get(CSZ_PREVISIONE));
		addAttributo(m_pattributi.get(CSZ_GIORNIPREVISIONE));

	}
	
	@Override
	public HashMap<String, ProprietaAttributo> getPropAttributi() {
		HashMap<String, ProprietaAttributo> map = super.getPropAttributi();
		if ( map == null)
			map = m_pattributi;
		else {
			map.putAll(m_pattributi);
		}
		return map;
	}
	
	public int getID() {
		return (Integer)getAttributi().get(CSZ_ID.toLowerCase()).getValue();
	}
	
	public String getNome() {
		return (String)getAttributi().get(CSZ_NOME.toLowerCase()).getValue();
	}
	public String getSymbol() {
		return (String)getAttributi().get(CSZ_SIMBOLO.toLowerCase()).getValue();
	}

	public void setID(int id) {
		getAttributi().get(CSZ_ID.toLowerCase()).setValue(id);
	}
	public void setNome(String nome) {
		getAttributi().get(CSZ_NOME.toLowerCase()).setValue(nome);
	}
	public void setSymbol(String simbolo) {
		getAttributi().get(CSZ_SIMBOLO.toLowerCase()).setValue(simbolo);
	}
	public String toString() {
		return getSymbol()+" - "+getNome();
	}
	public Double getPrevisione() {
		if (getAttributi().get(CSZ_PREVISIONE).isNull())
			return 0.0;
		return (Double)getAttributi().get(CSZ_PREVISIONE.toLowerCase()).getValue();
	}
	public void setPrevisione(double d) {
		getAttributi().get(CSZ_PREVISIONE.toLowerCase()).setValue(d);
	}

	public Double getGiorniPrevisione() {
		if (getAttributi().get(CSZ_GIORNIPREVISIONE).isNull())
			return 0.0;
		return (Double)getAttributi().get(CSZ_GIORNIPREVISIONE.toLowerCase()).getValue();
	}
	public void setGiorniPrevisione(double d) {
		getAttributi().get(CSZ_GIORNIPREVISIONE.toLowerCase()).setValue(d);
	}

}
